package cn.tedu.proxy.service;
//代理对象（代理独享和目标独享要具有相同的行为就要实现同一个或同一些接口。）
public class OrderServiceProxy implements OrderService{
    // 将目标对象作为代理对象的一个属性。这种关系叫做关联关系。比继承关系的耦合度低。
    // 代理对象中含有目标对象的引用。关联关系。has a
    // 注意：这里要写一个公共接口类型。因为公共接口耦合度低。

    private OrderService target;//这就是目标对象。目标对象一定是实现可OrderService接口的。

    public OrderServiceProxy(OrderService target) {
        this.target = target;
    }

    //以下为代理方法
    @Override
    public void generate() {
        long begin = System.currentTimeMillis();
        //调用目标对象的目标方法
        target.generate();
        long end = System.currentTimeMillis();
        System.out.println("订单生成耗时:" + (end - begin) + "毫秒");
    }

    @Override
    public void modify() {
        long begin = System.currentTimeMillis();
        target.modify();
        long end = System.currentTimeMillis();
        System.out.println("订单修改耗时:" + (end - begin) + "毫秒");
    }

    @Override
    public void detail() {
        long begin = System.currentTimeMillis();
        target.detail();
        long end = System.currentTimeMillis();
        System.out.println("订单查看耗时:" + (end - begin) + "毫秒");

    }
}
